//定义store
import {defineStore} from 'pinia'
import {ref} from 'vue'
/* 
    第一个参数:名字,唯一性
    第二个参数:函数,函数的内部可以定义状态的所有内容

    返回值: 函数
*/
export const useTokenStore = defineStore('token',()=>{
    //定义状态的内容

    //1.响应式变量
    const token = ref('')

    //验证token格式
    const isValidToken = (token) => {
        return token && typeof token === 'string' && token.length > 10
    }

    //2.定义一个函数,修改token的值
    const setToken = (newToken)=>{
        try {
            console.log('Attempting to set token:', newToken)
            if (!isValidToken(newToken)) {
                throw new Error('Invalid token format')
            }
            token.value = newToken
            console.log('Token set successfully')
        } catch (error) {
            console.error('Failed to set token:', error)
            throw error
        }
    }

    //3.函数,移除token的值
    const removeToken = ()=>{
        console.log('Removing token')
        token.value=''
    }

    //获取当前token
    const getToken = () => {
        return token.value
    }

    return {
        token,
        setToken,
        removeToken,
        getToken
    }
},{
    persist: {
        key: 'user-token',
        storage: localStorage,
        paths: ['token']
    }
});